//package com.culturalCenter.dataCenter.Utils;
//
//import com.culturalCenter.dataCenter.globalconfig.hbasee.HBaseBean;
//import org.apache.hadoop.hbase.*;
//import org.apache.hadoop.hbase.client.*;
//import org.apache.hadoop.hbase.util.Bytes;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.util.StringUtils;
//
//import java.io.IOException;
//import java.util.*;
//
//@Service
//public class HBaseUtils {
////    @Autowired
////    private HbaseTemplate hbaseTemplate;
//
//    @Autowired
//    private Admin hbaseAdmin;
//
//    /**
//     * 判断表是否存在
//     *
//     * @param tableName 表名
//     * @return true/false
//     */
//    public boolean isExists(String tableName) {
//        boolean tableExists = false;
//        try {
//            TableName table = TableName.valueOf(tableName);
//            tableExists = hbaseAdmin.tableExists(table);
//        } catch (IOException e) {
//            log.error(e.getMessage(), e);
//        }
//        return tableExists;
//    }
//
//    /**
//     * 分区【10, 20, 30】 -> ( ,10] (10,20] (20,30] (30, )
//     * @param keys 分区集合[10, 20, 30]
//     * @return byte二维数组
//     */
//    private byte[][] getSplitKeys(List<String> keys) {
//        byte[][] splitKeys = new byte[keys.size()][];
//        TreeSet<byte[]> rows = new TreeSet<>(Bytes.BYTES_COMPARATOR);
//        for(String key : keys) {
//            rows.add(Bytes.toBytes(key));
//        }
//        int i = 0;
//        for (byte[] row : rows) {
//            splitKeys[i] = row;
//            i ++;
//        }
//        return splitKeys;
//    }
//
//    public static HBaseBean toHBaseBean(Result rs){
//        List<Cell> cells = rs.listCells();
//        HBaseBean  hBaseBean=new HBaseBean();
//        cells.forEach(cell -> {
//            hBaseBean.setRowKey(Bytes.toString(CellUtil.cloneRow(cell)));
//            hBaseBean.setColumnFamily(Bytes.toString(CellUtil.cloneFamily(cell)));
//            hBaseBean.setColumnQualifier(Bytes.toString(CellUtil.cloneQualifier(cell)));
//            hBaseBean.setTimeStamp(cell.getTimestamp());
//            hBaseBean.setType(cell.getType().toString());
//            hBaseBean.setValue(Bytes.toString(CellUtil.cloneValue(cell)));
//        });
//        return hBaseBean;
//    }
//
//    public static List<HBaseBean> toHBaseBeans(Result rs){
//        List<HBaseBean>  hBaseBeans=new ArrayList<>();
//        List<Cell> cells = rs.listCells();
//        cells.forEach(cell -> {
//            HBaseBean  hBaseBean=new HBaseBean();
//            hBaseBean.setRowKey(Bytes.toString(CellUtil.cloneRow(cell)));
//            hBaseBean.setColumnFamily(Bytes.toString(CellUtil.cloneFamily(cell)));
//            hBaseBean.setColumnQualifier(Bytes.toString(CellUtil.cloneQualifier(cell)));
//            hBaseBean.setTimeStamp(cell.getTimestamp());
//            hBaseBean.setType(cell.getType().toString());
//            hBaseBean.setValue(Bytes.toString(CellUtil.cloneValue(cell)));
//            hBaseBeans.add(hBaseBean);
//        });
//        return hBaseBeans;
//    }
//
//    public static List<HBaseBean> toHBaseBeans(Iterator<Result> resultIterator){
//        List<HBaseBean>  hBaseBeans=new ArrayList<>();
//        while (resultIterator.hasNext()){
//            Result rs = resultIterator.next();
//            List<Cell> cells = rs.listCells();
//            cells.forEach(cell -> {
//                HBaseBean  hBaseBean=new HBaseBean();
//                hBaseBean.setRowKey(Bytes.toString(CellUtil.cloneRow(cell)));
//                hBaseBean.setColumnFamily(Bytes.toString(CellUtil.cloneFamily(cell)));
//                hBaseBean.setColumnQualifier(Bytes.toString(CellUtil.cloneQualifier(cell)));
//                hBaseBean.setTimeStamp(cell.getTimestamp());
//                hBaseBean.setType(cell.getType().toString());
//                hBaseBean.setValue(Bytes.toString(CellUtil.cloneValue(cell)));
//                hBaseBeans.add(hBaseBean);
//            });
//        }
//        return hBaseBeans;
//    }
//
//    /**
//     * 获取单行结果
//     * @return
//     */
//    public static  Map<String, String> getRowData(Result rs) {
//        Map<String, String> column = new HashMap<>();
//        column.put("rowKey", Bytes.toString(rs.getRow()));
//        List<Cell> cells = rs.listCells();
//        for (Cell cell : cells) {
//            String columnName = Bytes.toString(CellUtil.cloneQualifier(cell));
//            String columnValue =  Bytes.toString(CellUtil.cloneValue(cell));
//            column.put(columnName, columnValue);
//        }
//        return column;
//    }
//
//    public static void setStartAndStop(String startRow, String stopRow, Scan scan) {
//        if (!StringUtils.isEmpty(startRow)) {
//            scan.withStartRow(Bytes.toBytes(startRow));
//        }
//
//        if (!StringUtils.isEmpty(stopRow)) {
//            scan.withStopRow(Bytes.toBytes(stopRow));
//        }
//    }
//}
